home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / progs / editor / frexxed / fpl / buflist.fpl < prev    next >
Text File  |  1996-07-11  |  3KB  |  143 lines

  1. int listsize;
  2. void export BufferMakeList()
  3. {
  4.   int originid = GetEntryID();
  5.   int listid = GetEntryID("*bufferlist*");
  6.   int firstid;
  7.   int id;
  8.   string text;
  9.   string name;
  10.   
  11.   firstid = GetBufferID();
  12.   id = firstid;
  13.   listsize=0;
  14.   do {
  15.     name = ReadInfo("full_file_name", id);
  16.     if(!strlen(name))
  17.       name = "*noname*";
  18.     text += sprintf("  %c %8s %6d %-60s %s\n",
  19.                     ReadInfo("changes", id)?'C':'-',
  20.                     ReadInfo("protection", id),
  21.                     ReadInfo("size", id),
  22.                     name,
  23.                     ltostr(id, 32));
  24.     listsize++;
  25.     id=NextBuffer(id);
  26.     if (id==firstid)
  27.       id=0;
  28.   } while (id);
  29.  
  30.   if(!listid) {
  31.     listid = New();
  32.     if(!listid)
  33.       return;
  34.   }
  35.  
  36.   Visible(0);
  37.   CurrentBuffer(listid);
  38.  
  39.   if(!ReadInfo("visible", listid)) {
  40.     /* not visible, let's do something about it! */
  41.     if(ReadInfo("views", originid) == 1) { /* only one view */
  42.       /* display it by splitting the current view! */
  43.       Activate(listid, 1, originid);
  44.     } else {
  45.       /* pop up by replacing the next view! */
  46.       Activate(listid, 0, NextView(originid));
  47.     }
  48.  
  49.   }
  50.  
  51.   SetInfo(-1, "_bufferlist", 1); /* set bufferlist-mode */
  52.   Rename("*bufferlist*");      /* always make sure this name is set! */
  53.   Clean("Clear();");         /* clear all old contents from this! */
  54.   Output(text);             /* paste the table */
  55.   BlockSort(listid, 4, 1);     /* sort it according to the file names */
  56.   GotoLine(1);             /* goto first line, first column */
  57.   Output(" (C)  Protect  Size File name\n"); /* write tables headers */
  58.   SetInfo(-1, "changes", 0);     /* make it non-changed */
  59.  
  60.   CurrentBuffer(originid);
  61.   Visible(1);
  62. }
  63.  
  64. void export BufferMarkLine(int code)
  65. {
  66.   int line;
  67.   int endline;
  68.   int vis = Visible(0);
  69.  
  70.   if(ReadInfo("block_exist")) {
  71.     line =    ReadInfo("block_begin_y");
  72.     endline = ReadInfo("block_end_y");
  73.   }
  74.   else {
  75.     endline = line = ReadInfo("line");
  76.   }
  77.   CursorStack(-1);
  78.   SetInfo(-1, "insert_mode", 0);
  79.   while(line <= endline) {
  80.     if(line>1 && line<listsize+2) {
  81.       GotoLine(line); /* go to the left on the line */
  82.       if(code)
  83.         Output(itoc(code));
  84.       else
  85.         Output(" ");
  86.     }
  87.     ++line;
  88.   }
  89.   CursorStack(1);
  90.   SetInfo(-1, "insert_mode", 1);
  91.   Visible(vis);
  92. }
  93.  
  94. int GetID(int line)
  95. {
  96.   string str = GetLine(line);
  97.   return strtol(substr(str, strlen(str)-7, 6), 32);
  98. }
  99.  
  100. void export BufferMarkExecute()
  101. {
  102.   int lines = ReadInfo("lines"); /* number of lines in buffer! */
  103.   int count;
  104.   int changed;
  105.   int code;
  106.   for(count=1; count<lines; count++) {
  107.     code = GetChar(0, count);
  108.     if(' ' != code) {
  109.       int id = GetID(count);
  110.       switch(code) {
  111.         case 'D':
  112.           Kill(id);
  113.           break;
  114.         case 'S':
  115.           ExecuteString("Save();", id);
  116.           break;
  117.       }
  118.       changed++;
  119.     }
  120.   }
  121.   if(changed) {
  122.     /* list is modified, re-create it! */
  123.     BufferMakeList();
  124.   }
  125. }
  126.  
  127. void export BufferPopUp()
  128. {
  129.   int lines = ReadInfo("lines"); /* number of lines in buffer! */
  130.   int line = ReadInfo("line");
  131.   if(line>1 && line<=lines) {
  132.     CurrentBuffer(GetID(line));
  133.   }
  134. }
  135.  
  136. ConstructInfo("_bufferlist", "", "", "BL", "", 0, 1);
  137. AssignKey("BufferMarkLine('D');", "d", "_bufferlist");
  138. AssignKey("BufferMarkLine('S');", "s", "_bufferlist");
  139. AssignKey("BufferMarkLine(0);", "u", "_bufferlist");
  140. AssignKey("BufferMarkExecute();", "x", "_bufferlist");
  141. AssignKey("BufferPopUp();", "f", "_bufferlist");
  142. AssignKey("BufferMakeList();", "control x b");
  143.